Apex এবং Asynchronous Processing Salesforce প্ল্যাটফর্মে বড় ডেটাসেট, লং-রানিং অপারেশন, বা জটিল প্রসেসিং পরিচালনার জন্য একটি গুরুত্বপূর্ণ কৌশল। Asynchronous Processing-এর মাধ্যমে কোডটি অবিলম্বে চলতে পারে না, বরং ব্যাকগ্রাউন্ডে প্রক্রিয়া চালাতে থাকে, যা Governor Limits এবং ট্রানজ্যাকশন টাইমআউটের সমস্যাগুলো এড়িয়ে কার্যকরভাবে কাজ সম্পন্ন করে।
Asynchronous Processing Salesforce-এর জন্য খুবই গুরুত্বপূর্ণ, কারণ এটি:
Salesforce-এ Asynchronous Processing এর কয়েকটি প্রধান ধরন রয়েছে, যেমন Future Methods, Batch Apex, Queueable Apex, এবং Scheduled Apex।
Future Methods @future
অ্যানোটেশন ব্যবহার করে ঘোষণা করা হয়। এটি লং-রানিং প্রসেসের জন্য ব্যবহার করা হয় এবং পৃথক ট্রানজ্যাকশনে কাজ সম্পন্ন করে। Future Methods সাধারণত ওয়েব সার্ভিস কলআউট এবং বড় ডেটাসেট প্রসেসিংয়ের জন্য ব্যবহার করা হয়।
Future Methods এর বৈশিষ্ট্য:
primitive
ডেটা টাইপ (List বা Map সহ) পাস করা যায়।উদাহরণ:
public class FutureExample {
@future
public static void updateAccountIndustry(Set<Id> accountIds) {
List<Account> accounts = [SELECT Id, Industry FROM Account WHERE Id IN :accountIds];
for (Account acc : accounts) {
acc.Industry = 'Technology';
}
update accounts;
}
}
Batch Apex বড় ডেটাসেটকে ছোট ছোট অংশে ভাগ করে প্রসেস করতে ব্যবহৃত হয়। এটি Database.Batchable
ইন্টারফেস ইমপ্লিমেন্ট করে এবং বড় ট্রানজ্যাকশনের ক্ষেত্রে খুব কার্যকর।
Batch Apex এর বৈশিষ্ট্য:
উদাহরণ:
public class AccountBatchJob implements Database.Batchable<SObject> {
public Database.QueryLocator start(Database.BatchableContext bc) {
return Database.getQueryLocator('SELECT Id, Name FROM Account');
}
public void execute(Database.BatchableContext bc, List<SObject> scope) {
List<Account> accounts = (List<Account>) scope;
for (Account acc : accounts) {
acc.Name = 'Batch Updated';
}
update accounts;
}
public void finish(Database.BatchableContext bc) {
System.debug('Batch Process Completed');
}
}
execute
মেথডের মাধ্যমে প্রতিটি ব্যাচের জন্য নির্দিষ্ট কোড চালানো হচ্ছে।finish
মেথডে সম্পূর্ণ ব্যাচ প্রসেসিং শেষে কোড চলবে।Queueable Apex Queue এ একটি কাজ বা জব রাখে, যা পরে ব্যাকগ্রাউন্ডে একের পর এক প্রক্রিয়া চালায়। এটি Future মেথডের উন্নত সংস্করণ এবং চেইনিং সমর্থন করে।
Queueable Apex এর বৈশিষ্ট্য:
উদাহরণ:
public class QueueableExample implements Queueable {
public void execute(QueueableContext context) {
List<Account> accounts = [SELECT Id, Industry FROM Account WHERE Industry = 'Finance'];
for (Account acc : accounts) {
acc.Industry = 'Banking';
}
update accounts;
}
}
// Queueable job কল করার জন্য
Id jobId = System.enqueueJob(new QueueableExample());
execute
মেথডে Queueable Job চালানো হয়েছে।Scheduled Apex নির্দিষ্ট সময় পরপর বা নির্ধারিত সময়ে কাজ সম্পন্ন করতে ব্যবহৃত হয়। এটি Schedulable
ইন্টারফেস ইমপ্লিমেন্ট করে।
Scheduled Apex এর বৈশিষ্ট্য:
উদাহরণ:
public class ScheduledExample implements Schedulable {
public void execute(SchedulableContext context) {
List<Account> accounts = [SELECT Id FROM Account WHERE CreatedDate = LAST_N_DAYS:30];
System.debug('Accounts created in the last 30 days: ' + accounts.size());
}
}
// Job Scheduling
String cronExp = '0 0 0 1 * ?'; // প্রতি মাসের ১ তারিখে চালানো হবে
System.schedule('Monthly Account Report', cronExp, new ScheduledExample());
পরিস্থিতি | প্রযোজ্য Asynchronous Technique |
---|---|
বড় ডেটাসেট প্রসেস করতে হবে | Batch Apex |
লং-রানিং কাজ বা বহিরাগত সিস্টেমে কলআউট | Future Methods |
একাধিক Queueable Job ক্রমান্বয়ে চালানো | Queueable Apex |
নির্দিষ্ট সময় বা দিন পরপর কাজ চালানো | Scheduled Apex |
Asynchronous Processing এর বিভিন্ন কৌশল ব্যবহার করে Salesforce প্ল্যাটফর্মে বড় ডেটাসেট ও জটিল প্রসেসিং কার্যকরীভাবে পরিচালনা করা সম্ভব, যা ব্যবহারকারীর অভিজ্ঞতা উন্নত করে এবং Governor Limits বজায় রাখে।
Asynchronous Apex হলো এমন একটি প্রক্রিয়া, যেখানে কোড বা প্রক্রিয়াগুলি অন্য প্রক্রিয়া থেকে স্বাধীনভাবে কাজ করে এবং নির্দিষ্ট সময়ে সম্পন্ন হয়। Asynchronous Apex সাধারণত দীর্ঘমেয়াদী, বৃহৎ ডেটা সেট, এবং জটিল লজিক্যাল কার্যক্রম সম্পন্ন করতে ব্যবহৃত হয়, যা তাৎক্ষণিকভাবে এক্সিকিউট করার প্রয়োজন নেই।
Salesforce-এ Asynchronous Apex-এর মাধ্যমে বড় ডেটাসেট প্রক্রিয়া এবং সময়সাপেক্ষ কার্যক্রম মূল ট্রানজাকশনের বাইরে চালানো সম্ভব হয়, যা প্ল্যাটফর্মের পারফরম্যান্স এবং কার্যক্ষমতা উন্নত করে।
গভর্নর লিমিট মেনে চলা: Synchronous Apex-এর গভর্নর লিমিট বেশ সীমিত, তবে Asynchronous Apex-এ কিছু গভর্নর লিমিট বেশি থাকে। যেমন, Synchronous Apex-এ ৬ এমবি Heap Size ব্যবহার করা যায়, যেখানে Asynchronous Apex-এ ১২ এমবি।
বড় ডেটাসেট প্রক্রিয়াকরণ: বড় ডেটাসেট নিয়ে কাজ করতে হলে Synchronous Apex গভর্নর লিমিট দ্রুত অতিক্রম করে, তাই বড় ডেটাসেট বা দীর্ঘমেয়াদী কাজ Asynchronous Apex ব্যবহার করে সম্পন্ন করা যায়।
টাইম-ইনটেনসিভ প্রসেসিং: দীর্ঘমেয়াদী কাজ, যেমন রিপোর্ট প্রসেসিং, বড় SOQL কুয়েরি, অথবা API কল আউট-এর জন্য Asynchronous Apex ব্যবহার কার্যকরী।
ব্যাকগ্রাউন্ড প্রসেসিং: কিছু প্রক্রিয়া যেমন ডেটা ইন্টিগ্রেশন বা ব্যাকগ্রাউন্ড আপডেট, যা ব্যবহারকারীর তাৎক্ষণিক মনোযোগের প্রয়োজন হয় না, সেগুলি Asynchronous Apex ব্যবহার করে সম্পন্ন করা যায়।
Salesforce-এ কয়েকটি গুরুত্বপূর্ণ Asynchronous Apex রয়েছে, যা বিভিন্ন কার্যক্রম সম্পন্ন করতে ব্যবহৃত হয়। এগুলো হলো:
Future Methods সহজ এবং দ্রুত Async প্রসেসিংয়ের জন্য ব্যবহৃত হয়। যখন কোনো প্রসেসকে Async করতে হয়, তখন সেই মেথডে @future
অ্যানোটেশন যুক্ত করতে হয়। Future মেথড ব্যবহার করে লং রানিং প্রসেস যেমন API কল আউট বা বড় SOQL কুয়েরি চালানো যায়।
apex
Copy code
public class FutureExample {
@future
public static void processFuture() {
// Async লজিক
List<Account> accounts = [SELECT Id, Name FROM Account];
System.debug('Total Accounts: ' + accounts.size());
}
}
@future
মেথড Async প্রসেসিং হিসেবে কাজ করবে এবং তাৎক্ষণিকভাবে মূল প্রসেসে ব্যাঘাত করবে না।Batch Apex ব্যবহার করে বড় ডেটাসেটকে ছোট ছোট ব্যাচে ভাগ করে প্রক্রিয়া করা যায়, যা গভর্নর লিমিট অতিক্রম না করে বড় ডেটাসেট প্রক্রিয়াকরণে সহায়ক। Batch Apex-এ ডেটা এক্সিকিউশন ২০০টি রেকর্ডের ব্যাচে বিভক্ত করে চালানো হয়।
public class BatchExample implements Database.Batchable<SObject> {
public Database.QueryLocator start(Database.BatchableContext BC) {
return Database.getQueryLocator('SELECT Id, Name FROM Account');
}
public void execute(Database.BatchableContext BC, List<SObject> scope) {
for (SObject s : scope) {
Account acc = (Account) s;
acc.Name = acc.Name + ' Updated';
}
update scope;
}
public void finish(Database.BatchableContext BC) {
System.debug('Batch process completed.');
}
}
start
মেথডে SOQL কুয়েরি সংজ্ঞায়িত করা হয়েছে, যা নির্দিষ্ট ডেটা ফিল্টার করে।execute
মেথডে প্রতিটি ব্যাচের ২০০টি রেকর্ড প্রক্রিয়া করা হয়েছে।finish
মেথডে ব্যাচ প্রসেস শেষ হলে একটি বার্তা প্রিন্ট করা হয়েছে।Queueable Apex হলো Future Methods-এর একটি উন্নত সংস্করণ, যা চেইনিং এবং কনস্ট্রাক্টর ব্যবহার করে ডেটা প্রক্রিয়াকরণকে আরও কার্যকর করে। Queueable Apex-এ চেইনড প্রসেস চালানো যায় এবং API কল, SOQL কুয়েরি, DML অপারেশন করা যায়।
public class QueueableExample implements Queueable {
public void execute(QueueableContext context) {
List<Account> accounts = [SELECT Id, Name FROM Account];
for (Account acc : accounts) {
acc.Name = acc.Name + ' Processed';
}
update accounts;
}
}
execute
মেথড Queueable Context-এ Async প্রসেসিং চালাচ্ছে এবং মূল Transaction-কে ব্যাহত করছে না।Scheduled Apex ব্যবহার করে নির্দিষ্ট সময়ে কোনো Apex কোড বা প্রসেস চালানো যায়। এটি একটি শিডিউল অনুযায়ী চলতে পারে, যেমন প্রতিদিন, সপ্তাহে, বা নির্দিষ্ট তারিখে।
public class ScheduledExample implements Schedulable {
public void execute(SchedulableContext sc) {
List<Account> accounts = [SELECT Id, Name FROM Account];
for (Account acc : accounts) {
acc.Name = acc.Name + ' Scheduled';
}
update accounts;
}
}
String cronExp = '0 0 12 * * ?';
System.schedule('Daily Account Update', cronExp, new ScheduledExample());
cronExp
দ্বারা শিডিউল নির্ধারণ করা হয়েছে, যা প্রতিদিন ১২টায় ScheduledExample
ক্লাস চালাবে।গভর্নর লিমিট মেনে বড় প্রসেসিং: Asynchronous Apex গভর্নর লিমিটের সীমার মধ্যে বড় ডেটাসেট প্রক্রিয়া করতে সহায়ক।
ব্যাকগ্রাউন্ড প্রসেসিং সক্ষমতা: ব্যবহারকারীর তাৎক্ষণিক মনোযোগ ছাড়াই বড় প্রসেসিং ব্যাকগ্রাউন্ডে চালানো যায়।
কাস্টম শিডিউলিং: নির্দিষ্ট সময়ে প্রসেস চালানো বা নির্দিষ্ট সময়ের পরে কাজ সম্পন্ন করতে Scheduled Apex ব্যবহার করা যায়।
চেইনিং এবং কনস্ট্রাক্টর ব্যবহার: Queueable Apex-এ একাধিক Async প্রসেস চেইনিং এর মাধ্যমে চালানো যায় এবং কনস্ট্রাক্টরের মাধ্যমে ডেটা প্রেরণ করা যায়।
Governor Limits মনিটর করা: Async Apex-এর জন্য গভর্নর লিমিট জানুন এবং সেই সীমার মধ্যে কোড অপ্টিমাইজ করুন।
Batch Size ছোট রাখা: বড় ডেটাসেট প্রক্রিয়াকরণে Batch Apex ব্যবহার করুন এবং প্রয়োজন অনুযায়ী ব্যাচ সাইজ নির্ধারণ করুন।
চেইনিং এড়িয়ে চলুন (বেশি না): Queueable Apex-এ প্রচুর চেইনিং এড়িয়ে চলুন; এতে গভর্নর লিমিট অতিক্রমের ঝুঁকি থাকে।
Exception Logging: Asynchronous Apex-এ Exception Logging এবং ডিবাগিং যুক্ত করুন, যাতে ত্রুটি সনাক্ত করা সহজ হয়।
Asynchronous Apex Salesforce-এ বড় ও দীর্ঘমেয়াদী কাজ সম্পন্ন করতে সহায়ক, যা গভর্নর লিমিটের মধ্যে কার্যক্রম সম্পন্ন করে। Future Methods, Batch Apex, Queueable Apex, এবং Scheduled Apex-এর মাধ্যমে কার্যক্ষম ও সময়মাফিক প্রক্রিয়াকরণ নিশ্চিত করা যায়। Asynchronous Apex ব্যবহারের মাধ্যমে Salesforce প্ল্যাটফর্মের কার্যক্ষমতা, স্থায়িত্ব এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত হয়।
Future Methods হলো Apex-এ ব্যবহৃত একটি Asynchronous Processing পদ্ধতি, যা দীর্ঘমেয়াদি কাজ বা বড় ডেটাসেট প্রসেস করতে ব্যবহৃত হয়। Future Methods আলাদা ট্রানজ্যাকশনে কাজ সম্পন্ন করে, যা Governor Limits এড়াতে সাহায্য করে এবং ব্যাকগ্রাউন্ডে কাজ চালায়। Future Methods সাধারণত ওয়েব সার্ভিস কলআউট, বড় ডেটাসেট প্রসেসিং, এবং এমন কোনো প্রসেসে ব্যবহৃত হয় যা অবিলম্বে সম্পন্ন হওয়ার প্রয়োজন নেই।
@future
অ্যানোটেশন দিয়ে ডিফাইন করতে হয়।Future Method লিখতে @future
অ্যানোটেশন ব্যবহার করতে হয় এবং Method অবশ্যই static হতে হবে। Future Method-এ primitive ডেটা টাইপ (যেমন Integer, String, বা List, Set, Map) পাস করা যায়।
@future
public static void methodName(parameters) {
// Method logic
}
নিচের উদাহরণে updateAccountIndustry
নামে একটি Future Method তৈরি করা হয়েছে, যা Account
অবজেক্টের Industry
ফিল্ড আপডেট করে।
public class FutureExample {
@future
public static void updateAccountIndustry(Set<Id> accountIds) {
List<Account> accounts = [SELECT Id, Industry FROM Account WHERE Id IN :accountIds];
for (Account acc : accounts) {
acc.Industry = 'Technology';
}
update accounts;
}
}
Set<Id>
প্যারামিটার ব্যবহার করা হয়েছে, যা Account
রেকর্ডের আইডি সংরক্ষণ করে।updateAccountIndustry
Future Method ব্যবহার করে Account
রেকর্ডের Industry
ফিল্ড আপডেট করা হয়েছে।Set<Id> accountIds = new Set<Id>{'0011j00000XXXXXXX', '0011j00000YYYYYYY'};
FutureExample.updateAccountIndustry(accountIds);
Future Method ব্যবহার করে Callouts করা যায়, যা সাধারণত অন্য ট্রানজ্যাকশনে সম্পন্ন হয়। নিচের উদাহরণে একটি Future Method performHttpCallout
কলআউট তৈরি করা হয়েছে, যা একটি ওয়েব সার্ভিসে HTTP কলআউট করে।
public class CalloutExample {
@future(callout=true)
public static void performHttpCallout() {
Http http = new Http();
HttpRequest request = new HttpRequest();
request.setEndpoint('https://api.example.com/data');
request.setMethod('GET');
HttpResponse response = http.send(request);
System.debug('Response: ' + response.getBody());
}
}
callout=true
সেট করা হয়েছে।HttpRequest
এবং HttpResponse
ব্যবহার করে একটি HTTP GET কলআউট করা হয়েছে।Future Method ব্যবহার করার কিছু সাধারণ পরিস্থিতি:
Future Method ব্যবহারে কিছু সীমাবদ্ধতা রয়েছে:
বৈশিষ্ট্য | Future Method | Queueable Apex |
---|---|---|
চেইনিং | সমর্থিত নয় | সমর্থিত |
Primitive Limitation | শুধুমাত্র primitive ডেটা টাইপ পাস করা যায় | Custom এবং Complex data types সমর্থন করে |
Return Value | রিটার্ন ভ্যালু সমর্থিত নয় | সমর্থিত নয় |
Usage Flexibility | কম ফ্লেক্সিবল | বেশি ফ্লেক্সিবল |
@future
অ্যানোটেশন দিয়ে ঘোষণা করা হয়।Future Methods ব্যবহার করে Salesforce প্ল্যাটফর্মে ব্যাকগ্রাউন্ডে কার্যকরী ডেটা প্রসেসিং, কলআউট, এবং বড় ডেটাসেট পরিচালনা সম্ভব হয়, যা ব্যবহারকারীর অভিজ্ঞতা এবং অ্যাপ্লিকেশনের কার্যকারিতা উন্নত করে।
Batch Apex এবং Queueable Apex Salesforce-এ বড় ডেটাসেট প্রক্রিয়াকরণ এবং লং-রানিং প্রসেস হ্যান্ডল করার জন্য ব্যবহৃত দুটি গুরুত্বপূর্ণ Asynchronous Apex প্রক্রিয়া। এগুলোর মাধ্যমে গভর্নর লিমিট মেনে কার্যক্ষমতা নিশ্চিত করা যায়। নিচে Batch Apex এবং Queueable Apex সম্পর্কে বিস্তারিত আলোচনা করা হলো।
Batch Apex হলো একটি Asynchronous Apex প্রক্রিয়া, যা বড় ডেটাসেটকে ছোট ছোট ব্যাচে ভাগ করে প্রসেস করে। এটি বড় ডেটাসেট প্রক্রিয়াকরণের জন্য খুবই কার্যকরী এবং গভর্নর লিমিটের মধ্যে থেকে কার্যক্রম সম্পন্ন করে। Batch Apex-এ ডেটা প্রসেসিং ২০০টি রেকর্ডের ব্যাচে সম্পন্ন হয়।
Batch Apex ক্লাসে তিনটি মেথড থাকে:
public class BatchExample implements Database.Batchable<SObject> {
public Database.QueryLocator start(Database.BatchableContext BC) {
return Database.getQueryLocator('SELECT Id, Name FROM Account');
}
public void execute(Database.BatchableContext BC, List<SObject> scope) {
for (SObject s : scope) {
Account acc = (Account) s;
acc.Name = acc.Name + ' Updated';
}
update scope;
}
public void finish(Database.BatchableContext BC) {
System.debug('Batch process completed.');
}
}
// Batch Apex চালানোর জন্য
Database.executeBatch(new BatchExample(), 100);
Queueable Apex হলো Future Methods-এর একটি উন্নত সংস্করণ, যা চেইনিং এবং কনস্ট্রাক্টর ব্যবহার করে ডেটা প্রক্রিয়াকরণ আরও সহজ করে তোলে। Queueable Apex-এ চেইনড প্রসেস চালানো যায় এবং বড়, জটিল কাজগুলি সহজে হ্যান্ডল করা যায়।
Queueable Apex-এ execute মেথড থাকে, যেখানে নির্দিষ্ট Async লজিক চালানো হয়।
public class QueueableExample implements Queueable {
private String accountName;
public QueueableExample(String accountName) {
this.accountName = accountName;
}
public void execute(QueueableContext context) {
List<Account> accounts = [SELECT Id, Name FROM Account WHERE Name = :accountName];
for (Account acc : accounts) {
acc.Name = acc.Name + ' Processed';
}
update accounts;
}
}
// Queueable Apex কল করা
QueueableExample job = new QueueableExample('Tech Solutions');
ID jobID = System.enqueueJob(job);
বৈশিষ্ট্য | Batch Apex | Queueable Apex |
---|---|---|
প্রধান উদ্দেশ্য | বড় ডেটাসেট প্রক্রিয়া ও বড় প্রসেসিং | Future Methods-এর বিকল্প ও চেইনিং সক্ষমতা |
ব্যাচ প্রসেসিং | ডেটাকে ব্যাচে ভাগ করে ২০০ রেকর্ড প্রতি প্রসেসিং | ব্যাচ ভাগ নেই, পুরো কাজ একবারে প্রসেসিং |
চেইনিং | চেইনিং সমর্থন করে না | চেইনিং সমর্থন করে |
কনস্ট্রাক্টর থেকে ডেটা পাস | সমর্থন করে না | সমর্থন করে |
গভর্নর লিমিট | বেশিরভাগ গভর্নর লিমিট সাধারণ লিমিটের তুলনায় বেশি | বেশিরভাগ গভর্নর লিমিট Future Methods-এর মতো |
ব্যবহার ক্ষেত্র | বড় ডেটাসেট প্রক্রিয়া ও লং-রানিং প্রসেস | ছোট ও মাঝারি লজিক্যাল কার্যক্রম এবং ডেটা পাস |
Batch Apex এবং Queueable Apex ব্যবহার করে বড় এবং জটিল ডেটা প্রক্রিয়াকরণের কার্যক্ষমতা বৃদ্ধি করে Salesforce প্ল্যাটফর্মে উন্নত কার্যক্ষমতা নিশ্চিত করা যায়।
Schedulable Apex হলো Salesforce-এর একটি Asynchronous Apex ফিচার, যা নির্দিষ্ট সময়ে বা নিয়মিত বিরতিতে নির্দিষ্ট Apex কোড চালানোর জন্য ব্যবহৃত হয়। Schedulable Apex ব্যবহার করে নিয়মিত ডেটা প্রসেসিং, রেকর্ড আপডেট, অথবা ব্যাকগ্রাউন্ডে অন্যান্য কাজ স্বয়ংক্রিয়ভাবে সম্পন্ন করা যায়। এটি সাধারণত নির্দিষ্ট সময়ে নির্দিষ্ট কাজ সম্পন্ন করতে সহায়ক।
Schedulable Apex চালানোর জন্য Schedulable
ইন্টারফেস ইমপ্লিমেন্ট করতে হয় এবং execute
মেথড ডিফাইন করতে হয়। execute
মেথডে নির্দিষ্ট কাজ সম্পন্ন করার জন্য কোড লেখা হয়।
global class ScheduledExample implements Schedulable {
global void execute(SchedulableContext sc) {
// নির্দিষ্ট কাজ সম্পন্ন করার কোড
System.debug('Scheduled job is running');
}
}
Schedulable Apex নির্দিষ্ট সময়ে চালানোর জন্য System.schedule মেথড এবং Cron Expression ব্যবহার করা হয়। Cron Expression-এ সময় নির্ধারণ করতে পারেন, যা পাঁচটি অংশ নিয়ে গঠিত:
উদাহরণ | ক্রন এক্সপ্রেশন | বিবরণ |
---|---|---|
প্রতিদিন দুপুর ১২টায় | 0 0 12 * * ? | প্রতিদিন দুপুর ১২টায় চালানো |
প্রতি ঘন্টায় | 0 0 * * * ? | প্রতি ঘন্টায় চালানো |
প্রতি সপ্তাহের সোমবার | 0 0 10 ? * 2 | প্রতি সোমবার সকাল ১০টায় চালানো |
প্রতি মাসের ১ তারিখে | 0 0 0 1 * ? | প্রতি মাসের ১ তারিখে রাত ১২টায় |
নিচে একটি Schedulable Apex ক্লাস এবং Cron Expression ব্যবহার করে Schedulable Apex চালানোর উদাহরণ দেয়া হলো।
global class AccountUpdateScheduler implements Schedulable {
global void execute(SchedulableContext sc) {
List<Account> accounts = [SELECT Id, Name FROM Account WHERE LastModifiedDate = LAST_N_DAYS:30];
for (Account acc : accounts) {
acc.Name = acc.Name + ' - Updated';
}
update accounts;
System.debug('Scheduled job completed: Account names updated');
}
}
// Cron Expression: প্রতিদিন সকাল ৮টায়
String cronExp = '0 0 8 * * ?';
System.schedule('Daily Account Update', cronExp, new AccountUpdateScheduler());
AccountUpdateScheduler
ক্লাসে Account
রেকর্ড আপডেট করার জন্য execute
মেথডে কোড লেখা হয়েছে।Schedulable Apex Salesforce-এ নিয়মিত বিরতিতে স্বয়ংক্রিয় কাজ সম্পন্ন করতে ব্যবহৃত হয়। Cron Expression ব্যবহার করে Schedulable Apex-এ নির্দিষ্ট সময়ে কাজ চালানো যায়। এটি ডেটা প্রসেসিং, ক্লিনআপ, এবং রিমাইন্ডার পাঠানোর জন্য ব্যবহার করা যায়, যা ব্যবসায়িক কার্যক্রম আরও স্বয়ংক্রিয় ও সুনিয়ন্ত্রিত করে তোলে।
Read more